#include "strategy.h"
#include <iostream>

using namespace strategy;

void FlyWithWings::fly()
{
   std::cout << "fly with wings!" << std::endl;
}

void FlyNoWay::fly()
{
    std::cout << "fly no way!" << std::endl;
}

void TrueQuack::quack()
{
    std::cout << "Quack!" << std::endl;
}

void Squeak::quack()
{
    std::cout << "Squeak!" << std::endl;
}

void MuteQuack::quack()
{
    std::cout << "Mute quack!" << std::endl;
}

MallardDuck::MallardDuck()
{
    this->m_pFly = new FlyWithWings();
    this->m_pQuack = new TrueQuack();
}

RedHeadDuck::RedHeadDuck()
{
    this->m_pFly = new FlyNoWay();
    this->m_pQuack = new TrueQuack();
}

RubberDuck::RubberDuck()
{
    this->m_pFly = new FlyNoWay();
    this->m_pQuack = new Squeak();
}

DecoyDuck::DecoyDuck()
{
    this->m_pFly = new FlyNoWay();
    this->m_pQuack = new MuteQuack();
}

